﻿
CREATE VIEW [dbo].[99_final] AS

SELECT	t.*
		,ABS(z.Budget_monthly_2014) * -1 as Budget_ZweckMonat_2014
		,grp.Betrag_ZweckMonat
FROM
(
-- LEFT JOIN, damit auch Buchungen sichtbar werden ohne ZweckId
	SELECT 
		Buchungstag
		,Verwendungszweck
		,Betrag
		,Wertdatum
		,CreatedOn
		,zm.MatchID as Zweck_Id 
	FROM dbo.[05_persistente_Buchungen] b
	LEFT JOIN dbo.[ZweckMatch] zm ON b.ZweckMatchID = zm.ZweckMatchID
	where ZweckID_manuell is null
	UNION ALL
-- Anfügen der manuell übersteuerten Buchungen
	SELECT 
		Buchungstag
		,Verwendungszweck
		,Betrag
		,Wertdatum
		,CreatedOn
		,z.ZweckID 
	FROM dbo.[05_persistente_Buchungen] b
	LEFT JOIN dbo.[dim_Zweck] z ON b.ZweckID_manuell = z.ZweckID
	WHERE ZweckID_manuell is not null
	UNION ALL
-- Anfügen der synthetischen Buchungen
	SELECT 
		Buchungstag
		,Verwendungszweck
		,Betrag
		,Wertdatum
		,CreatedOn
		,zm.MatchID
	FROM dbo.[06_synthetische_Buchungen] b
	LEFT JOIN dbo.[ZweckMatch] zm ON b.ZweckMatchID = zm.ZweckMatchID
) t
LEFT JOIN dim_Zweck z ON t.Zweck_Id = z.ZweckID
LEFT JOIN (SELECT Zweck_Id,LEFT(Wertdatum,7) as Monat, SUM(Betrag) as Betrag_ZweckMonat FROM [99_final] GROUP BY Zweck_Id,LEFT(Wertdatum,7)) grp
ON t.Zweck_Id = grp.Zweck_Id AND LEFT(t.Wertdatum,7) = grp.Monat